package co.inventario.presentacion;

import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;

import co.inventario.entidad.DepartamentoDTO;
import co.inventario.entidad.PaisDTO;
import co.inventario.modelo.fachada.DepartamentoFachada;

@ManagedBean
public class DepartamentoBean {

	DepartamentoDTO departamentoDTO;
	ArrayList<DepartamentoDTO> departamentoDTOlista;
	private List<DepartamentoDTO> departamentoFilter;

	public List<DepartamentoDTO> getDepartamentoFilter() {
		return departamentoFilter;
	}

	public void setDepartamentoFilter(List<DepartamentoDTO> departamentoFilter) {
		this.departamentoFilter = departamentoFilter;
	}

	public DepartamentoBean() {
		departamentoDTO = new DepartamentoDTO();
		PaisDTO paisDTO = new PaisDTO();
		departamentoDTO.setPaisDTO(paisDTO);
		refrescarTablaDepartamentos();
	}

	public DepartamentoDTO getDepartamentoDTO() {
		return departamentoDTO;
	}

	public void setDepartamentoDTO(DepartamentoDTO departamentoDTO) {
		this.departamentoDTO = departamentoDTO;
	}

	public ArrayList<DepartamentoDTO> getDepartamentoDTOlista() {
		return departamentoDTOlista;
	}

	public void setDepartamentoDTOlista(ArrayList<DepartamentoDTO> departamentoDTOlista) {
		this.departamentoDTOlista = departamentoDTOlista;
	}

	private void refrescarTablaDepartamentos() {
		try {
			DepartamentoFachada departamentoFachada = new DepartamentoFachada();
			departamentoDTOlista = departamentoFachada.consultarTodo();
		} catch (Exception exception) {
			System.out.println("Error producido al consultar los departamentos en el Bean: " + exception.getMessage());
		}
	}

	public void crear() {
		FacesContext context = FacesContext.getCurrentInstance();
		try {
			if (departamentoDTO.getNvNombreDepartamento() == null || "".equals(departamentoDTO.getNvNombreDepartamento().trim())) {
				context.addMessage(null, new FacesMessage("error ", "El campo nombre de departamento esta vacio" + departamentoDTO.getNvNombreDepartamento()));
			} else {
				DepartamentoFachada departamentoFachada = new DepartamentoFachada();
				departamentoFachada.crear(departamentoDTO);
				refrescarTablaDepartamentos();
				context.addMessage(null, new FacesMessage("succesfull", "el campo se ha creado con exito : " + departamentoDTO.getNvNombreDepartamento()));
			}
		} catch (Exception exc) {
			context.addMessage(null, new FacesMessage("Error", "se ha producido un error - el error es  : " + exc.getMessage()));
		}
	}

	public void consultartodo() {
		FacesContext contexto = FacesContext.getCurrentInstance();
		try {
			if (departamentoDTO.getInCodigoDepartamento() == 0) {
				contexto.addMessage(null, new FacesMessage("Error", "El campo no puede estar vacio"));
			} else {
				refrescarTablaDepartamentos();
			}
		} catch (Exception excepcion) {
			contexto.addMessage(null, new FacesMessage("Error", "Se ha producido un error al consultar el registro: " + excepcion.getMessage()));
		}
	}

	public void actualizar() {
		FacesContext contexto = FacesContext.getCurrentInstance();
		try {
			DepartamentoFachada departamentoFachada = new DepartamentoFachada();
			departamentoFachada.actualizar(departamentoDTO);
			refrescarTablaDepartamentos();
		} catch (Exception excepcion) {
			contexto.addMessage(null, new FacesMessage("Error", "Se ha producido un error al consultar el registro: " + excepcion.getMessage()));
		}
	}
}
